Шаг 129 - Стандартный диалог выбора цвета

Загрузить проект

Стандартное диалоговое окно выбора цвета выглядит так.

129.gif (4754 b)

Давайте создадим приложение на базе диалогового окна с кнопкой, по которой будет произведен вызов этого диалогового окна. Вот код по нажатию на кнопку.

void CTestColorDlg::OnButton1() 
{
 CColorDialog cc(NULL,NULL,NULL);
 if (cc.DoModal()==IDOK)
 {
   color=cc.GetColor();
 }
}
Есть стандартный класс CColorDialog, который ответственен за создание диалогового окна выбора цветов. Конструктор класса перегружает все параметры по умолчанию и поэтому в принципе их можно не указывать. Упоминание NULL у меня три раза только для демонстрации того, что эти три параметра существуют.
CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL );
В таком виде программа тоже будет работать.
void CTestColorDlg::OnButton1() 
{
 CColorDialog cc;
 if (cc.DoModal()==IDOK)
 {
   color=cc.GetColor();
 }
}
После объявления класса его можно запустить на выполнение использовавшись DoModal, и если после выбора была нажата кнопка OK (IDOK) можно получить цвета использовав getColor. Результат вернется в формате COLORREF, поэтому переменная color должна быть объявленна как
COLORREF color;
На панели выбора цветов есть как основные цвета так и дополнительные. Когда панель зарускается первый раз дополнительные цвета пустые. Пользователь может их дополнять. Но после выхода из приложения они сбросятся. При необходимости доступа к дополнительным цветам есть функция GetSavedCustomColors, которая вернет указатель на массив из 16 элементов COLORREF
static COLORREF * GetSavedCustomColors( );
Hosted by uCoz